package mq

import (
	"fmt"
	. "mq-apiserver/handler"
	"mq-apiserver/model"
	"mq-apiserver/pkg/errno"
	"mq-apiserver/util"

	"github.com/gin-gonic/gin"
	"github.com/lexkong/log"
	"github.com/lexkong/log/lager"
)

// @CreateUser 创建用户
func CreateUser(c *gin.Context) {
	log.Info("用户创建mq账号", lager.Data{"X-Request-Id": util.GetReqID(c)})
	var r MQUserCreateRequest
	if err := c.Bind(&r); err != nil {
		SendResponse(c, errno.ErrBind, nil)
		return
	}
	u := model.MQUser{
		Username: r.Username,
		Pw:       r.Pw,
		Super:    r.Super,
		State:    1,
	}
	// 验证-user
	if err := u.ValidateMQUser(); err != nil {
		SendResponse(c, errno.ErrValidation, nil)
		return
	}
	// 验证用户是否已经注册了
	_, err := model.GetMQUser(u.Username)
	if err == nil {
		SendResponse(c, errno.ErrUserNameRegistered, nil)
		return
	}
	// 用户数据 加密
	if err := u.EncryptMQUser(); err != nil {
		SendResponse(c, errno.ErrEncrypt, nil)
		return
	}
	// 新增用户
	if err := u.CreateMQUser(); err != nil {
		SendResponse(c, errno.ErrDatabase, nil)
		return
	}
	rsp := MQCreateResponse{
		Username: r.Username,
	}

	SendResponse(c, nil, rsp)
}

// @CreateTopic 创建主题
func CreateTopic(c *gin.Context) {}

// 新增mq账号
func CreateMQUser(c *gin.Context) {
	log.Info("用户创建mq账号2", lager.Data{"X-Request-Id": util.GetReqID(c)})
	var r MQUserCreateRequestTwo
	if err := c.Bind(&r); err != nil {
		SendResponse(c, errno.ErrBind, nil)
		return
	}

	fmt.Printf("测试:%v", r.TopicArr[0].TopicName)

	// 判断是否有主题信息
	if len(r.TopicArr) > 0 {

	}

	// u := model.MQUser{
	// 	Username: r.Username,
	// 	Pw:       r.Pw,
	// 	Super:    r.Super,
	// 	State:    1,
	// }

	// // 验证-user
	// if err := u.ValidateMQUser(); err != nil {
	// 	SendResponse(c, errno.ErrValidation, nil)
	// 	return
	// }
	// // 验证用户是否已经注册了
	// _, err := model.GetMQUser(u.Username)
	// if err == nil {
	// 	SendResponse(c, errno.ErrUserNameRegistered, nil)
	// 	return
	// }
	// // 用户数据 加密
	// if err := u.EncryptMQUser(); err != nil {
	// 	SendResponse(c, errno.ErrEncrypt, nil)
	// 	return
	// }
	// // 新增用户
	// if err := u.CreateMQUser(); err != nil {
	// 	SendResponse(c, errno.ErrDatabase, nil)
	// 	return
	// }
	rsp := MQCreateResponse{
		Username: "asd123",
	}

	SendResponse(c, nil, rsp)
}
